/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Contabilidad;

import CONTROLES.ControlSucursal;
import INTERFAZ.*;
import UTILITARIOS.Herramienta;
import UTILITARIOS.PanelPickFechas;
import UTILITARIOS.StringToDate;
import UTILITARIOS.UTextField;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.*;
import javax.swing.border.TitledBorder;


/**
 *
 * @author Administrador
 */
public class FormNewActivoFijo extends JDialog implements Propiedades{

//     ControlUsuario control;

    private JPanel titulo;
    private JPanel formulario;
    private JPanel botones;

    private JLabel lblIdSucursal;
    private Choice choiseIdSucursal;

    private JLabel lblNombre;
    private UTextField txtNombre;

    private JLabel lblDescripcion;
    private UTextField txtDescripcion;

    private JLabel lblValor;
    private UTextField txtValor;
    private JLabel lblBs;

    private PanelPickFechas fecha;

    private JLabel lblIdCuentaPlan;
    private Choice choiseIdCuentaPlan;

    private JButton btnAceptar;
    private JButton btnAceptarMas;
    private JButton btnCancelar;

    ControlSucursal cSucursal;
    ControlCuentaPlanContable cCuentaPlan;

    public FormNewActivoFijo(java.awt.Frame parent)
    {
        super(parent);
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();
    }

    public void setProperties() {
        setLayout(null);
		setSize(560, 288);
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                setTitle("Registro de Activos Fijos");
		getContentPane().setBackground(Color.BLACK);
		setResizable(false);
    }

    public void buildComponents() {

        cSucursal = new ControlSucursal();
        cCuentaPlan = new ControlCuentaPlanContable();

        String lista[] = cSucursal.nombresSuc();
        String listaCuentasPlan[] = cCuentaPlan.nombresCuentasActivo();

        lblIdSucursal = new JLabel("Sucursal : ", JLabel.RIGHT );
        choiseIdSucursal = new Choice();
        for(int i = 0; i<lista.length; i++)
           choiseIdSucursal.add(lista[i]);

        choiseIdSucursal.select(Bienvenida.sucursal.getIdSucursal()+"-"+Bienvenida.sucursal.getNombreSuc());
        lblNombre = new JLabel("Nombre : ", JLabel.RIGHT );
        txtNombre = new UTextField(UTextField.ONLY_CARACTERS_VALUE);

        lblDescripcion = new JLabel("Descripcion del Activo : ", JLabel.RIGHT );
        txtDescripcion = new UTextField();

        lblValor = new JLabel("Valor de Activo : ", JLabel.RIGHT );
        txtValor = new UTextField(UTextField.DOUBLE_VALUE);
        lblBs = new JLabel("Bs. ", JLabel.LEFT );

        fecha = new PanelPickFechas("Fecha de Compra : ");

        lblIdCuentaPlan = new JLabel("Cuenta Contable : ", JLabel.RIGHT );
        choiseIdCuentaPlan = new Choice();
        for(int i = 0; i<listaCuentasPlan.length; i++)
           choiseIdCuentaPlan.add(listaCuentasPlan[i]);

        titulo = new JPanel();
        formulario = new JPanel();
        botones = new JPanel();

        btnAceptar = new JButton("GUARDAR");
        btnAceptarMas = new JButton("GUARDAR Y AÑADIR MAS");
        btnCancelar = new JButton("CANCELAR");
    }

    public void setPropertiesComponents() {
        titulo.setLayout(new BorderLayout(1,1));
        titulo.setSize(new Dimension(555,260));
        
        titulo.setBorder(BorderFactory.createTitledBorder(null,"DATOS DEL ACTIVO",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        
        formulario.setLayout(new FlowLayout());
        formulario.setSize(new Dimension(500,100));
        
        botones.setSize(250, 100);
       

        //titulo.setBorder(Herramienta.createTitleBorder("Registro de Usuarios"));
        formulario.setBorder(Herramienta.createTitleBorder(""));
        botones.setBorder(BorderFactory.createTitledBorder(null,"ACCIONES",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        Dimension dimLabel = new Dimension(120,20);
	Dimension dimText = new Dimension(290,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,11);

        lblIdSucursal.setPreferredSize( dimLabel );
        lblIdSucursal.setFont(fontLabel);
        lblIdSucursal.setForeground(Color.BLACK);
        choiseIdSucursal.setPreferredSize( dimText );

        if(Bienvenida.user.getTipoUsuario().equalsIgnoreCase("ADMINISTRADOR") && Bienvenida.user.getToken().equalsIgnoreCase("INGRESAR") ){
           choiseIdSucursal.setEnabled(true);
           }else{
           choiseIdSucursal.setEnabled(false);
           }

        lblNombre.setPreferredSize(dimLabel);
        lblNombre.setFont(fontLabel);
        lblNombre.setForeground(Color.BLACK);
        txtNombre.setPreferredSize(dimText);

        lblDescripcion.setPreferredSize(dimLabel);
        lblDescripcion.setFont(fontLabel);
        lblDescripcion.setForeground(Color.BLACK);
        txtDescripcion.setPreferredSize(dimText);

        lblValor.setPreferredSize(new Dimension(135,20));
        lblValor.setFont(fontLabel);
        lblValor.setForeground(Color.BLACK);
        txtValor.setPreferredSize(new Dimension(80,20));
        lblBs.setPreferredSize(new Dimension(220,20));

        fecha.setPreferredSize(new Dimension(450,20));

        lblIdCuentaPlan.setPreferredSize( dimLabel );
        lblIdCuentaPlan.setFont(fontLabel);
        lblIdCuentaPlan.setForeground(Color.BLACK);
        choiseIdCuentaPlan.setPreferredSize( dimText );

        btnAceptar.setPreferredSize(new Dimension(100,20));
        btnAceptarMas.setPreferredSize(new Dimension(180,20));
        btnCancelar.setPreferredSize(new Dimension(100,20));

        botones.setOpaque(false);

        btnAceptar.setToolTipText("Guardar Activo Fijo");
        btnAceptar.setForeground(Color.BLACK);
        btnAceptarMas.setToolTipText("Guardar Activo Fijo y seguir añadiendo otros");
        btnAceptarMas.setForeground(Color.BLACK);
        btnCancelar.setToolTipText("Cancelar la operación");
        btnCancelar.setForeground(Color.BLACK);

        btnAceptar.setMnemonic('g');
        btnAceptarMas.setMnemonic('a');
        btnCancelar.setMnemonic('c');
    }

    public void addComponents() {

        formulario.add(lblIdSucursal);
        formulario.add(choiseIdSucursal);

        formulario.add(lblNombre);
        formulario.add(txtNombre);

        formulario.add(lblDescripcion);
        formulario.add(txtDescripcion);

        formulario.add(lblValor);
        formulario.add(txtValor);
        formulario.add(lblBs);
        formulario.add(fecha);

        formulario.add(lblIdCuentaPlan);
        formulario.add(choiseIdCuentaPlan);

        botones.add(btnAceptar);
        botones.add(btnAceptarMas);
        botones.add(btnCancelar);
     
        add(titulo);
        titulo.add( "Center",formulario);
        titulo.add("South",botones);

    }
    private int guardar(){
        ControlActivoFijo control_activo = new ControlActivoFijo();
        ActivoFijo activo = new ActivoFijo();
        
        String idSuc = getChoiseIdSucursal();
        StringTokenizer i = new StringTokenizer(idSuc,"-");
        int idSucursal = Integer.parseInt(i.nextToken());

        double valor = Double.parseDouble(getTxtValor());
        String fechaCreacion = getFechaCreado();
        Date fechaC = new StringToDate().convertir(fechaCreacion);

        String NombreCuentaPlan = getChoiseIdCuentaPlan();
        StringTokenizer id_c = new StringTokenizer(NombreCuentaPlan,"-");        
        int idCuentaPlan = Integer.parseInt(id_c.nextToken());        
        if(getTxtNombre().equals("") || getTxtDescripcion().equals("") || valor <= 0){
            return 2;
        }else{
            activo.setNombre(getTxtNombre());
            activo.setDescripcion(getTxtDescripcion());
            activo.setValor(valor);            
            activo.setIdSucursal(idSucursal);
            activo.setIdCuentaPlan(idCuentaPlan);
            activo.setFecha(fechaC);
            activo.setActivo(true);
            
            if(control_activo.registrarActivo(activo) == true)
                return 0;
            else
                return 1;
        }
    }
    public void addEvents() {
        btnAceptarMas.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                int t = guardar();
                if(t==0){
                    JOptionPane.showMessageDialog(null, "Activo Fijo Registrado Correctmente, Presione Aceptar y continue añadiendo MAS ACTIVOS FIJOS", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                    txtDescripcion.setText(null);
                    txtValor.setText(null);
                    txtNombre.setText(null);
                }
                else if(t==1){
                    JOptionPane.showMessageDialog(null, "Se produjo un error al tratar de registrar el ACTIVO FIJO", "Confirmación", JOptionPane.ERROR_MESSAGE);
                    dispose();
                }
                else if(t==2)
                    JOptionPane.showMessageDialog(null, "Los Datos del formulario no han sido llenados correctamente", "Confirmación", JOptionPane.ERROR_MESSAGE);
            }
        });
        btnAceptar.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {                
                int t = guardar();
                if(t==0){
                    JOptionPane.showMessageDialog(null, "ACTIVO FIJO correctamente ingresado ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                    dispose();
                } else if (t == 1){
                    JOptionPane.showMessageDialog(null, "Se produjo un error al tratar de registrar el ACTIVO FIJO", "Confirmación", JOptionPane.ERROR_MESSAGE);
                    dispose();
                }
                else if(t==2)
                    JOptionPane.showMessageDialog(null, "Los Datos del formulario no han sido llenados correctamente", "Confirmación", JOptionPane.ERROR_MESSAGE);
            }
        });
        btnCancelar.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                    //JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema ", "Adventencia", JOptionPane.OK_OPTION);
                    //System.exit(0);
                dispose();
            }
        });


               addWindowListener( new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				//JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                        }
		});
    }

        public String getTxtNombre() {
        return  txtNombre.getText();
    }

    public void setTxtNombre(String txtNombre) {
        this.txtNombre.setText(txtNombre);
    }
    public String getTxtDescripcion() {
        return  txtDescripcion.getText();
    }

    public void setTxtDescripcion(String txtDescripcion) {
        this.txtDescripcion.setText(txtDescripcion);
    }
    public String getTxtValor() {
        return  txtValor.getText();
    }

    public void setTxtValor(String txtValor) {
        this.txtValor.setText(txtValor);
    }

    public String getFechaCreado() {

        return fecha.getDateText();
    }

    public void setFechaCreado(String fechaCreado) {
        this.fecha.setDate(fechaCreado);
    }

    public String getChoiseIdSucursal() {
        return choiseIdSucursal.getSelectedItem();
    }

    public void setChoiseIdSucursal(String choiseIdSucursal) {
        this.choiseIdSucursal.select(choiseIdSucursal);
    }

    public String getChoiseIdCuentaPlan() {
        return choiseIdCuentaPlan.getSelectedItem();
    }

    public void setChoiseIdCuentaPlan(String choiseIdCuenta) {
        this.choiseIdCuentaPlan.select(choiseIdCuenta);
    }


    public static void main(String args[])
    {
        FormNewActivoFijo n = new FormNewActivoFijo(new java.awt.Frame());
        n.setVisible(true);

    }
}
